# docker network

管理网络,包括创建,查看,列表,删除,移除,连接和断开

# 1 网络命令汇总

  • docker network create
  • docker network rm
  • docker network connect
  • docker network disconnect
  • docker network ls
  • docker network inspect
  • docker network prune

# 2 网络命令详解

# 2.1 docker network create
  1. 格式

    # 创建一个网络
    # docker network create  [OPTOINS] NETWORK
    docker run --itd --network=mynet busybox
    # --specify advanced options
    docker network create --driver bridge --subnet 192.168.100.0/24 my_br0
    docker network create \
    --driver bridge \
    --subnet 172.27.0.0/16 \
    -ip-range 172.27.5.0/24 \
    --gateway 172.27.5.254 \
    my_br0
    # 
    docker network create \
    -d overlay \
    --subnet 192.168.10.0/25 \
    --subnet 192.168.20.0/25 \
    --gateway 192.168.10.100 \
    --gateway 192.168.20.100 \
    --aux-address "my-router=192.168.10.5" \
    --aux-address "my-switch=192.168.10.6" \
    --aux-address "my-printer=192.168.20.5" \
    --aux-address "my-nas=192.168.20.6" \
    my-multihost-network
    # Network ingress mode
    docker network create -d overlay \
      --subnet=10.11.0.0/16 \
      --ingress \
      --opt com.docker.network.driver.mtu=9216 \
      --opt encrypted=true \
      my-ingress-network
    
  2. 选项

    1. --attachable 启动手动容器附件
    2. --aux-address 网络驱动程序使用辅助的IPv4或IPv6.
    3. --config-from 从其中复制配置的网络
    4. --config-only 创建仅配置的网络
    5. -d,--driver 驱动程序管理网络,默认bridge
    6. --gateway IPv4或IPv6的子网网关
    7. --ingress 创建集群路由网状网络
    8. --internal 限制外面网络访问
    9. --ip-range 从一个子范围分配容器IP
    10. --ipm-driver ip地址管理驱动
    11. ipm-opt 设置ip地址管理驱动特定选项
    12. --ipv6 启用IPv6网络
    13. --label 设置网络的label
    14. -o, --opt 设置驱动的特定选项
    15. --scope 控制网络的范围
    16. --subnet 子网掩码(CICR格式:10.16.0.1/24)
# 2.2 docker network rm
  • 格式
# docker network rm NETWORK [NETWORK...]
docker network rm my_br0
docker network rm 3682938cf33 my-network
# 2.3 docker network connect

连接一个容器到网络

  • 格式
# docker network connect [OPTIONS] NETWORK CONTAINER
docker run -itd --name container2 --network=multi-host-network busybox
docker network connect --ip 10.10.36.122 multi-host-network container2
docker network connect --link container1:c1 multi-host-network container2
docker network connect --alias db --alias mysql multi-host-network container2
#用了指定ip时,最好用ip-range指定ip范围,确保指定ip不在指定ip范围内,这样不会引起ip冲突
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network
docker network connect --ip 172.20.128.2 multi-host-network container2
  • 选项
  1. --alias 给容器增加网络范围的别名
  2. --driver-opt 网络的驱动选项
  3. --ip IPv4地址(eg,172.18.100.123)
  4. --ip6 IPv6地址(eg,2001:db8:33)
  5. --link 增加到另一个容器的连接
  6. --link-local-ip 给容器增加一个连接本地地址
# 2.4 docker network disconnect

断开一个容器与网络的连接

  • 格式
# docker network disconnect [OPTIONS] NETWORK CONTAINER
docker network disconnect multi-host-network container1
  • 选项
  1. -f,--force 强制断开容器和网络连接
# 2.5 docker network ls
  • 格式

    # docker network ls [OPTIONS]
    docker network ls
    docker network ls --no-trunc
    # filter driver|id|label(label=<key>|label=<key>=<val>)|name|scope(swarm|global|local)|type(custom|builtin)
    docker network ls --filter driver=bridge
    docker network ls -f id=63d1ff1f77b
    docker network ls -f "label=env"
    docker network ls -f "label=env=dev"
    docker network ls -f "name=dss_"
    docker network ls -f scope=swarm
    docker network ls -f scope=local
    docker network ls -f type=custom
    # 有用的使用,批量删除手动创建的network
    docker network rm `docker network ls -f type=custom -q`
    # format .ID|.Name|.Driver|.Scope|.IPv6|.Internal|.Labels|.Label|.CreatedAt
    docker network ls --format "{{.ID}}:{{.Driver}}"
    
  • 选项

    1. -f,--force
    2. --format
    3. --no-trunc 不截断输出
    4. -q,--quiet 只显示IDs
# 2.6 docker network inspect
  1. 格式

    # docker network inspect [OPTIONS] NETWORK [NETWORK...]
    docker network inspect my-network
    
  2. 选项

    1. -f,--format
    2. -v,--verbose
# 2.7 docker network prune

移除所有未使用的网络

  1. 格式

    # docker network prune [OPTIONS]
    docker network prune
    # filter until(timestamp)|label(label=<key>|label=<key>=<val>|label!=<key>|label!=<key>=<val>)
    #移除5小时前创建的网络
    docker network prune --force --filter until=5h
    
  2. 选项

    1. --filter
    2. -f,--force 强制执行而不提示确认